package com.dkd.sbtz.service;

import java.util.List;

import com.dkd.sbtz.domain.Sbtz;
import com.dkd.sbtz.domain.Spare;
import com.dkd.sbtz.domain.vo.AssetNodeListVO;
import com.dkd.sbtz.domain.vo.spare.SpareBatchDTO;
import com.dkd.sbtz.domain.vo.spare.SpareVO;

/**
 * 备件库存Service接口
 * 
 * @author xzj
 * @date 2025-09-03
 */
public interface ISpareService 
{
    /**
     * 查询备件库存
     * 
     * @param id 备件库存主键
     * @return 备件库存
     */
    public Spare selectSpareById(Long id);

    /**
     * 查询备件库存列表
     * 
     * @param spare 备件库存
     * @return 备件库存集合
     */
    public List<SpareVO> selectSpareList(Spare spare);

    /**
     * 新增备件库存
     * 
     * @param spare 备件库存
     * @return 结果
     */
    public int insertSpare(Spare spare);

    /**
     * 修改备件库存
     * 
     * @param spare 备件库存
     * @return 结果
     */
    public int updateSpare(Spare spare);

    /**
     * 批量删除备件库存
     * 
     * @param ids 需要删除的备件库存主键集合
     * @return 结果
     */
    public int deleteSpareByIds(Long[] ids);

    /**
     * 删除备件库存信息
     * 
     * @param id 备件库存主键
     * @return 结果
     */
    public int deleteSpareById(Long id);

    /**
     * 搜索备件库存
     * @param q
     * @param limit
     * @return
     */
    List<Spare> list(String keyword);         // 分页由控制器开启

    List<Spare> listByIds(List<Long> ids);



    /**
     * 批量新增/更新
     * @return [created, updated, variantsUpsert]
     */
    int[] batchUpsert(List<SpareBatchDTO> items, String operator);


    SpareVO getDetail(Long id);
    int insertSpareWithVariants(SpareVO vo);
    int updateSpareWithVariants(SpareVO vo);




    /**
     * 查询某备件下的所有厂商
     */
    List<String> selectVendorsBySpareId(Long spareId);

    /**
     * 查询某备件 + 厂商 下的所有规格
     */
    List<String> selectSpecsBySpareVendor(Long spareId, String vendor);
}
